const express = require('express')
const router = express.Router()
const bcrypt = require('bcrypt')
// const gravatar = require('gravatar')
const jwt = require('jsonwebtoken')

const db = require('../../config/key')
const keys = require('../../config/token')

// GET  /api/users/test
router.get("/test",(req,res) => {
    res.json({
        msg:'user login'
    })
})

// 用户注册接口
// POST /api/users/register
router.post("/register",(req,res) => {
    const userinfo = req.body
    // 首先查询 email 是否存在
    const sql = `select * from user where email=?`
    db.query(sql,userinfo.email,(err,result) => {
        if(err) return res.cc(err.message)
        if(result.length === 1 && result[0].email === userinfo.email){
            return res.status(400).json('该邮箱已被注册')
        }else{
            // console.log('注册成功');

            // 对密码进行加密
            userinfo.password = bcrypt.hashSync(userinfo.password,10)
            // 设置头像
            // const avatar = gravatar.url(userinfo.email, {s: '200', r: 'pg', d: 'mm'})

            // 接着进行插入用户信息
            const sql = `insert into user set ?`
            db.query(sql,{ id:userinfo.id,name:userinfo.name,password:userinfo.password,email:userinfo.email,user:userinfo.user },(err,result) => {
                if(err) return res.cc(err.message)
                if(!result.affectedRows === 1){
                    return res.cc('注册用户失败，请稍后再试！')
                }
               
                res.send({
                    status:0,
                    message:'注册成功！'
                })
            })
        }
    })
})

// 用户登录接口
// POST /api/users/login
router.post('/login',(req,res) => {

    const userinfo = req.body
    const sql = `select * from user where email=?`

    db.query(sql,userinfo.email,(err,result) => {
        if(err) return res.cc(err)
        if(result.length !== 1) return res.status(404).json('用户邮箱不存在!')
        
        // TODO：判断用户输入的登录密码是否和数据库中的密码一致
        const compareResult = bcrypt.compareSync(userinfo.password,result[0].password)
        if(!compareResult){
            res.cc('密码错误!')
        }else{
            // 在生成 Token 字符串的时候，一定要剔除 密码 的值
            const rule = {...result[0],password:''}
            jwt.sign(rule,keys.jwtSecretKey,{expiresIn:keys.expiresIn},(err,token) => {
                if(err) return res.cc(err)
                res.json({
                    status: 0,
                    msg: '登录成功',
                    token: 'Bearer ' + token
                })
            })

        }

    })
})

// router.get('/current',(req,res) => {
    
// })

module.exports = router